This invention relates to the field of network analysis, and in particular to the identification of multiple dependencies on packets forwarded from intermediate nodes in a network, and in particular packets forwarded from intermediate application acceleration nodes, such as WAN optimization devices.
The effective management of networks requires the use of a variety of network analysis tools. Many of these tools are configured to analyze actual traffic flows on the network, to characterize the performance of particular applications, diagnose performance problems, perform ‘what-if’ analyses, and so on.
Of particular significance in network performance analysis is the identification of dependencies associated with the messages that are communicated through the network. In diagnosing a problem, the identification of dependencies can lead to an identification of the cause or causes of the problem, or the elimination of candidate causes. In addressing means for improving the performance of a network, the identification of dependencies can lead to an identification of where best to enhance the network, and/or identify areas in which an enhancement to the network will have minimal impact on the overall performance.
In the general case, the identification of dependencies can lead to an identification of critical paths within the network, or an identification of critical paths associated with a particular application running on the network. U.S. published application 2008/0019278, “NETWORK CONGESTION ANALYSIS”, published 24 Jan. 2008, by Steve Niemczyk, Patrick J. Malloy, Alain J. Cohen, and Russell M. Elsner, discloses techniques for identifying critical paths in applications that include multiple paths, and techniques for determining where improvements can be made and estimating the gains that may be achieved by such improvements, and is incorporated by reference herein. Although the techniques presented in this referenced application address applications that include multiple paths, these techniques primarily address the case wherein the multiple paths are substantially independent of each other, and each received message has a single dependency-path back to the initiating request.
In a typical example of a request for data from a server that is coupled to a database, when a requesting node receives a response to the request, that response can be traced back to either a direct response from the server in response to receiving the request from the requesting node, or a response from the server after the server received the response from the database, based on a request from the server to the database upon receipt of the request from the requesting node. That is, in each case, there is a strict sequential order to the responses, and the analysis tools are configured to assume this sequential order, particularly for such tasks as aligning clocks among data collecting devices, performing conditional analyses, and so on. That is, for example, if a response is determined to be dependent upon a prior request, the network analysis tool is configured to never allow the response to be interpreted to have occurred prior to receipt of the request. U.S. published applications 2006/0013228, “PACKET TRACING”, published 19 Jan. 2006, and 2006/0050704, “CORRELATING PACKETS”, published 9 Mar. 2006, both by Patrick J. Malloy, Michael Cohen, and Alain J. Cohen, address network analysis tasks that rely on determining a sequential dependency among messages, and are incorporated by reference herein.
In a number of network environments, one or more elements are configured to enhance the performance of the network by initiating actions that bypass or otherwise avoid the strict sequentially associated with typical communication transactions. For example, some communication protocols call for an acknowledgement of receipt of a prior transmission by the destination node before sending a subsequent transmission, and some intermediate devices, commonly termed ‘proxy’ devices, are configured to avoid this requirement by ‘spoofing’ the transmitting node with an acknowledgement long before the destination node provides the actual acknowledgement. In another example, an intermediate device may be configured to ‘pre-fetch’ data on behalf of a requesting node, in anticipation of a request for that data by the requesting node.
WAN optimization devices, commonly termed WAN accelerators, have been developed to further enhance these delay-avoidance techniques by operating in tandem using specific protocols that are designed for such tandem devices. FIG. 1 illustrates a typical network configuration using a pair of WAN accelerators 20. Each network node 10 on either side of the network is substantially unaware of the presence of the accelerators 20, and each accelerator 20 is configured to operate as a proxy node for the network nodes 10, appearing as a conventional destination network node 10. That is, the WAN accelerator 20 communicates with the node 10 using a conventional communication protocol common to nodes 10, and communicates with the other WAN accelerator 20 using a communication protocol that is designed to optimize communications between the accelerators 20. For example, each WAN accelerator 20 will generally include a large amount of storage for caching data that has been sent to the nodes 10, and each WAN accelerator 20 knows which data is stored at the other WAN accelerator 20. When a source node 10 subsequently initiates a transmission of some or all of a prior transmission to a destination node 10, the WAN accelerator 20 at the source side of the network merely sends a command to the WAN accelerator 20 on the destination side of the network to initiate a transmission of this previously stored data from its cache to the destination node, thereby avoiding an actual transmission of the data across the network, transparent to either the source or destination nodes. Other techniques for accelerating traffic flow are common in the art of WAN acceleration.
Because of the use of these acceleration/sequence-avoiding techniques, it is often difficult to ascertain the causal relationships and/or parent-dependencies in view of the actual traffic flow. In the case of pre-fetching by an intermediate node, for example, providing a response to the requesting node is dependent upon actually receiving the request from the requesting node, as well as actually receiving the response to the anticipated request by the intermediate node. As noted above, conventional network analysis systems assume a single dependency path for each received message, and are poorly suited for the analysis of networks that include intermediate nodes that introduce multiple dependencies on the receipt of a message.
It would be advantageous to provide a method and system that facilitates the determination of multiple-parent dependencies on messages in a network that includes nodes that generally introduce such dependencies. It would also be advantageous to provide this determination of multiple-parent dependencies to other network analysis tools, to facilitate accurate analyses of traffic flows on the network, and to avoid infeasible situations and/or conclusions within these other network analysis tools.
These advantages, and others, can be realized by a system and method that identifies multiple parent-dependencies for messages that are received on a network that includes nodes that are configured to avoid the conventional strictly-sequential communications techniques and protocols, generally to accelerate network performance. If a network is known, or assumed, to include intermediate/proxy nodes that are configured to provide acceleration services, the system that analyzes traffic on the network is configured to assume that these nodes may/will provide such features, and thereby introduce multiple dependencies among the messages communicated across the network. For each message transmitted from a forwarding node, messages received at the forwarding node are assessed to distinguish messages from the destination node and messages from an other node, and a dependency is defined for each.
Throughout the drawings, the same reference numerals indicate similar or corresponding features or functions. The drawings are included for illustrative purposes and are not intended to limit the scope of the invention.